﻿#define _CRT_SECURE_NO_WARNINGS
////栈是一种 只允许在一段进行插入和删除的 线性表；
//#include <iostream>
//using namespace std;
//const int N = 1e5 + 10;
//// 创建栈
//int stk[N], n;
//// 进栈 - 本质就是顺序表⾥⾯的尾插
//void push(int x)
//{
//	stk[++n] = x;
//}
//// 出栈 - 顺序表的尾删操作
//void pop()
//{
//	n--;
//}
//// 查询栈顶元素
//int top()
//{
//	return stk[n];
//}
//// 判断是否为空
//bool empty()
//{
//	return n == 0;
//}
//// 查询有效元素的个数
//int size()
//{
//	return n;
//}
//int main()
//{
//	for (int i = 1; i <= 10; i++)
//	{
//		push(i);
//	}
//	// 当栈不为空的时候
//	while (size()) // while(!empty())
//	{
//		cout << top() << endl;
//		pop();
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "r");
//
//	if (NULL == pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//	else
//	{
//		printf(" 打开文件成功\n");
//	}
//	fputc('z', pf);
//	fputc('k', pf);
//	fputc('u', pf);
//	fputc('u', pf);
//	fputc('l', pf);
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//    ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

#include <stdio.h>
//struct s str
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//
//	struct s str = { "zhangsan",20,95.5 };
//	FILE* pf = fopen("test.txt", "w");
//
//	if (NULL == pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//	else
//	{
//		printf(" 打开文件成功\n");
//	}
//	
//	fprintf(pf,"%s %d %.2f\n",str.name,str.age,str.score);
//	/*char buf[20] = { 0 };
//	fgets(buf, 30, pf);
//	printf("%s", buf);
//	fgets(buf, 30, pf);
//	printf("%s", buf);*/
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	struct s str = { 0 };
//
//	FILE* pf = fopen("test.txt", "r");
//
//	if (NULL == pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	else
//	{
//		printf(" 打开文件成功\n");
//	}
//
//	fscanf(pf,"%s %d %f", str.name, &(str.age), &(str.score));
//
//	printf("%s %d %f\n",str.name,str.age,str.score);
//
//
//	fclose(pf);
//
//	pf = NULL;
//	return 0;
//}
//
//int main()
//{
//	int ch = fgetc(stdin);
//	fputc(ch, stdout);
//	return 0;
//}

// 
//int main()
//{
//	struct S s = { 0 };
//	fscanf(stdin, "%s %d %f", s.name, &(s.age),&(s.score));
//
//	fprintf(stdout, "%s %d %f\n", s.name, s.age, s.score);
//
//	return 0;
//}

struct S
{
	char name[20];
	int age;
	float score;
};

int main()
{
	struct S s = { "张三",20,98.5 };
	char buf[100] = { 0 };
	sscanf(buf, "%s %d %f", s.name, &(s.age), &(s.score));

	printf("%s %d %f\n",s.name,s.age,s.score);

	return 0;
}


// 测试二进制的读
//int main()
//{
//	struct S s = { 0 };
//	
//		FILE* pf = fopen("test.txt", "rb");
//	
//		if (NULL == pf)
//		{
//			perror("fopen");
//			return 1;
//		}
//	
//		else
//		{
//			printf(" 打开文件成功\n");
//		}
//	
//		fread(&s, sizeof(struct S), 1, pf);
//
//		fclose(pf);
//	
//		printf("%s %d %f\n", s.name, s.age, s.score);
//
//		pf = NULL;
//	 	return 0;
//}


// 测试二进制的写
//int main()
//{
//	struct S s = { "张三",20,98.5};
//
//	FILE* pf = fopen("test.txt", "wb");
//
//	if (NULL == pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	else
//	{
//		printf(" 打开文件成功\n");
//	}
//
//	fwrite(&s,sizeof(struct S),1,pf);
//
//
//
//	fclose(pf);
//
//	pf = NULL;
//	return 0;
//}









